package com.itheima.reggie.web.controller;

import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.itheima.reggie.entity.Order;
import com.itheima.reggie.entity.dto.OrderDto;
import com.itheima.reggie.entity.dto.OrderPageDto;
import com.itheima.reggie.entity.dto.PageDto;
import com.itheima.reggie.service.OrderService;
import com.itheima.reggie.utils.ThreadLocalUtil;
import com.itheima.reggie.web.R;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;

import javax.validation.constraints.NotNull;

/**
 * 订单
 */
@Slf4j
@RestController
@RequestMapping("/order")
@Validated
public class OrderController {
    @Autowired
    private OrderService orderService;

    /**
     * 提交订单。订单详情需要从数据库查询出来。
     *
     * @param order 订单的地址id、付款方式、备注
     * @return 是否下单成功
     */
    @PostMapping("/submit")
    public R submit(@RequestBody Order order) {
        // 记录日志
        log.info("用户点外卖啦，下单信息为：[ {} ]", order);

        // 调用service下单，并返回数据
        return orderService.submit(order);
    }

    /**
     * 分页查询订单（包含的订单详情）
     *
     * @param orderPageDto 分页条件和查询条件
     * @return  符合要求的分页数据
     */
    @GetMapping({"/userPage","/page"})
    public R<Page<OrderDto>> page(OrderPageDto orderPageDto) {

        // 记录日志
        log.info("分页查询，查第{}页，查{}条", orderPageDto.getPage(), orderPageDto.getPageSize());

        // 调用service并返回数据
        return orderService.pageWithOrderDetails(orderPageDto);

    }



}
